Custom assembly of 3d printed building modules

ABSTRACT

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for determining a suitable building layout for a property. One of the operations is performed by optionally, receiving building module parameters for section of qualifying building modules. displaying, via a user interface, a graphical representation of two or more building modules. A user may customize a building layout from the two or more building modules. The system displays an assembled building layout including two or more building modules. The system receives a confirmation of the assembled building layout for 3D printing. Based on the assembled building layout, instructions are generated and transmitted to one or more 3D printers to manufacture one or more building structures based on the selected building layout.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a Continuation-in-Part of, and claims the benefit ofU.S. patent application Ser. No. 16/431,512, filed Jun. 4, 2019, whichis hereby incorporated by reference it its entirety.

BACKGROUND

Traditional building planning and building construction processes areoften complicated and inefficient. Building planning may require hiringan architect to design a building, creating a floor plan, hiring a leadcontractor or multiple contractors to construct the building, obtainingpermits from local agencies to begin the construction, and incurringinspections of the structure at various times during construction. As tobuilding a structure often a foundation must first be poured and thenframing, plumbing, electrical systems and drywall must be constructed orinstalled. Construction of a new structure on a property often takesmany months to complete and requires multiple workers and inspections asthe construction proceeds.

SUMMARY

Described herein is an exemplary system for determining suitablebuilding layouts for a property and generating instructions for anautomated production line with a 3D printing process to produce thestructure for a selected building layout. The exemplary system providesfor user customization and selection of building modules that form afinal building layout. The building modules are 3D printed and assembledto form a complete building structure. The 3D printed structure may beprinted using Large Scale Additive Manufacturing methods, and then theprinted structure may go through post-processing steps like pouring foamfor insulation, finishing exterior and interior surfaces and beinstalled on the property.

In general, one innovative aspect of the subject described in thisspecification can be embodied in systems, computer readable media, andmethods that include operations for determining a suitable buildinglayout for a property. One of the operations is performed by receiving,via a user interface, a selection of a property, and accessing zoninginformation based on the property. A building envelope is determined anddisplayed via the user interface. A location for the placement of asuitable building footprint within the building envelope is determinedand the building footprint displayed within the building envelope. Abuilding layout is determined that fits within the building envelope.Based on a selected building layout, instructions are generated andtransmitted to an automated production line comprising a 3D printingprocess to produce one or more building structures based on the selectedbuilding layout.

In general, another innovative aspect of the subject described in thisspecification can be embodied in systems, computer readable media, andmethods that include operations for customizing a building layout for 3Dprinting of the constituent building modules that form an assembledbuilding layout. A user interface displays a graphical representation oftwo or more building modules. A building module represents a buildingstructure that may be 3D printed and assembled together with another 3Dprinted building structure of another building module. A building layoutmay be customized by the selection of two or more building modulesthereby creating an assembled building layout. The assembled buildinglayout includes those building modules that are of a configuration thatmay be physically assembled together after the respective buildingmodules have been 3D printed. A user interface displays a graphicalrepresentation of the assembled building layout including the selectedtwo or more building modules. The user interface receives a confirmationof the assembled building layout for production via an automatedproduction line comprising a 3D printing system.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description, the claims and the drawings. Thedetailed description and specific examples are intended for illustrationonly and are not intended to limit the scope of the disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The present disclosure will become better understood from the detaileddescription and the drawings, wherein:

FIG. 1 illustrates a block diagram of an example system utilized inperforming determination of a suitable building layout for a property.

FIG. 2 illustrates a flowchart of an example process for determining asuitable building layout for a property.

FIG. 3A illustrates an example user interface of the computer system.

FIG. 3B illustrates an example user interface of the computer system.

FIG. 4 illustrates an example user interface of the computer system.

FIG. 5 illustrates an example user interface of the computer system.

FIG. 6 illustrates example building layouts generated by the computersystem.

FIG. 7 illustrates example building modules for forming a buildinglayout.

FIG. 8 illustrates example building modules for forming a buildinglayout.

FIG. 9 illustrates an example machine of the computer system.

FIG. 10 illustrates a flowchart of an example process for customizing abuilding layout for production via an automated production linecomprising a 3D printing system.

DETAILED DESCRIPTION

In this specification, reference is made in detail to specificembodiments of the invention. Some of the embodiments or their aspectsare illustrated in the drawings.

For clarity in explanation, the invention has been described withreference to specific embodiments, however it should be understood thatthe invention is not limited to the described embodiments. On thecontrary, the invention covers alternatives, modifications, andequivalents as may be included within its scope as defined by any patentclaims. The following embodiments of the invention are set forth withoutany loss of generality to, and without imposing limitations on, theclaimed invention. In the following description, specific details areset forth in order to provide a thorough understanding of the presentinvention. The present invention may be practiced without some or all ofthese specific details. In addition, well known features may not havebeen described in detail to avoid unnecessarily obscuring the invention.

In addition, it should be understood that steps of the exemplary methodsset forth in this exemplary patent can be performed in different ordersthan the order presented in this specification. Furthermore, some stepsof the exemplary methods may be performed in parallel rather than beingperformed sequentially. Also, the steps of the exemplary methods may beperformed in a network environment in which some steps are performed bydifferent computers in the networked environment.

Some embodiments are implemented by a computer system. A computer systemmay include a processor, a memory, and a non-transitorycomputer-readable medium. The memory and non-transitory medium may storeinstructions for performing methods and steps described herein.

FIG. 1 illustrates a block diagram of an example system 100 utilized inperforming determination of a suitable building layout for a property.The system 100 includes a property determination module 104, a buildingenvelope determination module 106, a building layout selection module108, a suitable layout construction module 110, a building envelopesorting module 112, and a suitable building envelope determinationmodule 114, and an application engine 132 that can receive input andselections from a user, and can generate user interface data describingproperty boundaries, property footprints, building envelopes, propertybuilding layouts and building modules. The system 100 can generateinteractive user interfaces 134 (e.g., web pages to be rendered by auser device) for presentation on a user device 130. A user of the userdevice 130 can provide information (e.g., user input) associated with aparticular property via the user interface 134.

The system 100 includes one or more electronic data stores that may belocally or remotely accessed. These data stores (e.g., databases),include, but are not limited to, zoning data 110 which includes zoningdata related to a property identifier, property shape data 112 whichincludes property shape data related to a property identifier, andstructure building layout data 114 which includes structure data relatedto building layouts and/or building modules. While the data stores 110,112 and 114 are displayed separately, the data and informationmaintained in a data store may be combined together or further separatedin a manner the promotes retrieval and storage efficiency and/or datasecurity.

Now referring to FIG. 2, the figure illustrates a block diagram of anexample process for determining a suitable building layout for aproperty. Via the property determination module 104 the system 100obtains property parcel information based on a received propertyidentifier 210 via the user interface 134. In response to receiving theproperty identifier, the system 100 retrieves zoning data based on theproperty identifier 220. Then based on the retrieved zoning data, viathe building envelope determination module 106, the system 100determines or generates building envelopes based on the zoning data 230.The system 100 then displays via user interface 134 a graphicrepresentation of building envelopes along with a perimeter of theproperty and the perimeters of other building footprints 240. The system100 then determines a suitable building footprint within the buildingenvelope 250, and the displays, via user interface 134, a graphicalrepresentation of the suitable building footprint 260. The system 100then receives a selection of a suitable building layout for printing a3D structure based on the selected suitable building layout 270.

The property identifier may be any one of an address of the property(e.g., 123 Anywhere St., San Francisco, Calif.), a geo-spatial locationsuch as a GPS or GNSS coordinate, a latitude or longitude coordinate, aspecific identifier referencing a particular property such as anassessor's parcel number (APN) or a lot number, and/or any othersuitable descriptor that identifies a particular property parcel. In oneexample, a user may enter an address of the property for which the userdesires to determine a suitable building layout for the property. Thesystem 100 may use the property address as the property identifier andthen in response to receiving the property address, the system 100retrieves zoning data from a data store 110 related to the propertyidentifier 220.

In another example, the system 100 may display, via the graphical userinterface 134, a map depicting one or more property parcels. The system100 may receive a user selection of one or more of the property parcelsvia the user interface 134. In response to the selection, the system 100obtains zoning data from a data store 110 related to the user's selectedproperty parcel 220.

The data store 110 may be a local or remote database that includeszoning data related to the property identifier. Moreover, the data storemay be accessed via an application program interface (API) for instancewhere the system 100 may access data via a cloud-based system orservice, or an Internet-based data store. Additionally, the system 100may access a local database or memory storage device directly andretrieve zoning data.

The zoning data 110 includes information and data that may be used todetermine pre-existing building structures, property boundaries andother zoning requirements for building additional structures orenhancing pre-existing structures on a property. Exemplary zoning datamay include, but is not limited to the following:

APN Number—is a unique number that is assigned to each tract of land ina county typically by the tax assessor. This value is typicallyindicated as alpha-numeric.

Address—is the street address of the tract of land. This value istypically indicated as alpha-numeric.

Current Use—is an allowed type of use for the tract, such as commercial,administrative, residential or industrial. This value is typicallyindicated as alpha-numeric.

Allowed Uses—is list of allowed uses such as accessory dwelling unit(ADU) and supplemental dwelling unit (SDU). This value is typicallyindicated as alpha-numeric.

Historical District—indicates whether the tract is in a designatedhistorical district. This value is typically indicated with a Booleanvalue of Y or N.

Zoning—is the zone name, for example ‘R-1’, ‘R-1-8’, ‘A1-1’.

Perimeter—perimeter of the lot.

Area Square Footage—square footage of the lot.

Free Space Square Footage—space not occupied by any registered structureon the lot.

Number of Footprints—indicates the total pre-existing number footsprints for the property. This number of footprints is typicallyindicated as a numerical integer value, such as 0, 1, 2, 3, etc.

Parameters of Every Footprint—a list of dots defining polygons for everyfootprint with location of the lot and its square footage and perimeter.

Maximum Floor Area—is the maximum square feet for a building structure.This maximum floor area is typically indicated as a numeric value insquare feet.

Minimum Floor Area—is the minimum square feet for a building structure.This minimum floor area is typically indicated as a numeric value insquare feet.

Minimum Front Setback—is the minimum distance between the edge of thefront of the property line of the tract and where a structure may beadded. This minimum distance is typically indicated as a numeric valuein feet as a numerical integer value, such as 0, 1, 2, 3, etc. and/orfractional numbers.

Minimum Rear Setback—is the minimum distance between the edge of therear of the property line of the tract and where a structure may beadded. This minimum distance is typically indicated as a numeric valuein feet.

Minimum Side Setback—is the minimum distance between the edge of a sideof the property line of the tract and where a structure may be added.This minimum distance is typically indicated as a numeric value in feet.

Minimum 2nd Floor Front Setback—is the minimum distance between the edgeof the front of the property line of the tract and where 2nd floor ofnew structure may be added. The minimum distance is typically indicatedas a numeric value in feet.

Minimum 2nd Floor Side Setback—is the minimum distance between the edgeof a side of the property line of the tract and where 2nd floor of newstructure may be added. This minimum distance is typically indicated asa numeric value in feet.

Maximum Building Height—is the maximum height for a building structureon the tract and is typically designated in feet or meters. This minimumdistance is typically indicated as a numeric value in feet.

Maximum Number of Floors—is the maximum number of floors for a buildingstructure, and is typically designated as a numerical integer value,such as 1, 2, 3, 4, etc.

Allowed in Front Yard—indicates whether a new structure allowed to bebuilt on the front yard of the tract. This value is typically indicatedwith a Boolean value of Y or N.

Required Number of Parking Spaces—is the required number of parkingspaces for the property. This number of parking spaces is typicallyindicated as a numerical integer value, such as 0, 1, 2, 3, etc.

Now referring to FIGS. 3A and 3B, an exemplary user interface 300 ofsystem 100 is illustrated. The user interface 300 includes a useraffordance 302 (e.g., an input text box) for entering a propertyidentifier. The system 100 receives an input from a user designating aproperty identifier, such as an address into the user affordance 302. Inresponse to receiving the property identifier, the system 300 retrievesfrom one or more data stores, shape data 112 (e.g., vector or rasterdata, geo-spatial coordinates, or other data that may be used to rendera graphical shape) related to the property identifier.

Based on the retrieved zoning data and shape data 110, 112, via thebuilding envelope determination module 106, the system 100 generates agraphical representation of the property boundary 304 (e.g., a polygonalboundary perimeter), pre-existing footprints of the property 306 (e.g.,a polygonal footprint perimeter), and one or more building envelopes 308(e.g., a polygonal building envelope perimeter). The system 100determines from the zoning data whether any pre-existing footprints(e.g., structures or other property used spaced, such as a driveway)exist on the property. If the system 100 determines that a pre-existingfootprint exists 306, then based on retrieved shape data 112, the system100 generates a pre-existing footprint perimeter 306 depicting theperimeter for a respective pre-existing footprint.

In the example user interface 300, while only one pre-existing footprintperimeter 306 is depicted, in many instances, multiple footprints maypre-exist on the subject property. If such is the case, then the system100 will generate multiple footprint perimeters, one for each of thepre-existing footprints and display, via the user interface 300, thepre-existing footprint perimeters 306. The system 100 may combine two ormore pre-existing footprint perimeters into a larger perimeter ifmultiple pre-existing footprint perimeters are contiguous and/oradjacent to one another. In other words, multiple pre-existing footprintperimeters may be combined into a single larger polygonal shape, andgraphically displayed, via the user interface 300, as such.

Based on the retrieved zoning data, via the building envelopedetermination module 106, the system 100 determines one or more buildingenvelopes 308 for the available free space of the property on which anew structure may be added. In other words, the building envelope 308represents the available free space of the property where a buildingstructure may be added in compliance with zoning requirements as to theproperty. For example, the system 100 may calculate a building envelope308 by evaluating the property's perimeter and excluding pre-existingfootprints and minimum setbacks from each property line and pre-existingstructures.

Note that in some instances, the property may not have associated zoningdata (e.g., the property may be located in an unincorporated area), andin such a case, a building envelope would be unencumbered by typicalzoning requirements (e.g., minimum setbacks).

After the system 100 determines the building envelope(s) 308, the system100 displays the building envelope(s) 308 as one or more polygons placedwithin the property perimeter 304. Any number of determined buildingenvelopes may be placed within the property perimeter.

The system 100 allows for various modes of selecting or automaticallysuggesting suitable building layouts for the property. A suitablebuilding layout is a model representing a 3D printed structure that maybe printed and installed on the property in an available buildingenvelope. A suitable building layout is graphically represented in theuser interface 300 by a suitable building footprint 310. The suitablebuilding footprint is a proposed footprint of a new structure. Asuitable building footprint corresponds to the size and the location onthe property where the new 3D printed building structure is to beinstalled or placed.

In one embodiment, the system 100 predetermines a set of buildinglayouts that would fit within the building envelope 308. For example,the system 100, via the layout selection module 108, displays, via theuser interface 300, a list of suitable building layouts 312 that wouldfit within the predetermined building envelope 308. In this example,three different suitable building layouts (e.g., a Mighty Studio, Duplexside-by-side, and Duplex Mirrored) have been determined to fit withinthe building envelope 308. The user interface 300 may receive a userselection of one of the suitable building layouts from the list 312. Inresponse to receipt of the selection, the system 100 displays a suitablebuilding footprint 310 corresponding to the selected suitable buildinglayout from the list 312. Each of the suitable building layouts have apredetermined size and overall square footage. The suitable buildingfootprint 310 is scaled to the size of the selected suitable buildinglayout in relation to the scale of the property and is displayed via theuser interface 300 as such.

These predetermined building layouts correspond to suitable buildingfootprint 310. The suitable building footprint 310 of FIG. 3A asdepicted is of a different size and different location than the suitablebuilding footprint 310 of FIG. 3B. These two different suitable buildingfootprints represent two different building layouts.

While the examples shown in FIGS. 3A and 3B depict a suitable buildingfootprint 310 being placed in a non-adjacent location separate and apartfrom the pre-existing footprint perimeter 306, the suitable buildingfootprint 310 may also be placed adjacent to a pre-existing footprintperimeter 306. The system 100 allows for the creation of attachedbuilding structures to existing building structures. For example, a usermay want to extend a house with an additional bedroom or living room.The system 100 will determine available space next to the house anddisplay building envelopes adjacent to the house identifying locationswhere additional structures may be placed. The user may then select asuitable building layout representing a desired extension module to beattached to the house.

Referring now to FIG. 4, an exemplary user interface 400 of system 100is illustrated with property boundary 404, pre-existing footprints 405,406, building envelopes 407, 408, 409, pre-determined building layout410, user input affordance 402, and suitable building layout selectionlist 412. This figure is used to illustrate how the system 100determines which building envelopes are of a sufficient size to allowplacement of pre-determined sized building layouts.

A building envelope sorting module 112 of system 100 determines thesmallest to largest of the building envelopes by sorting buildingenvelope polygons from the smallest sized building envelope polygon tothe largest sized building envelope polygon.

As previously discussed, the building envelope determination modulegenerates the available building envelopes for a property. In the casewhere only one building envelope has been generated, then the system 100would forgo the process of sorting of the building envelopes.

After the building envelope polygons are sorted, a suitable buildingenvelope determination module 106 of system 100 identifies one or moreof the building envelopes where a smallest pre-determined buildinglayout might be placed. In some cases, some building envelopes may betoo small in size to fit a pre-determined building layout. For example,building envelope 407 has too small of an area to install or place anynew structures.

The system 100 may exclude building envelopes where the area of thebuilding envelope is less than a predetermined criteria or threshold.For example, where the area of the building envelope does not meet anarea threshold, such as 450 sq. ft. (e.g. building envelope 407). Inanother example, a building envelope may have an area of 1000 sq. ft.This area of 1000 sq. ft. appears to be a suitable size over the minimumthreshold of 450 sq. ft and would adequately fit a pre-determinedbuilding layout. However, in this example the dimensions of the buildingenvelope are only 10 ft by 100 ft. The system 100 may set a minimumpredetermined width or length for a suitable building envelope. In thisexample, the minimum width or length may be set to 40 ft, and becausethe minimum width dimension has not met been met (i.e., a width of 40ft.), then the building envelope would be too small to build a suitablestructure, and would be precluded from being displayed. Variousmathematical equations may be used to calculate the width of the polygonshape of a building envelope.

The system 100 identifies which pre-determined building layouts wouldfit within the respective building envelopes. For example, the sizes ofthe predetermined building layouts may be 576 sq. ft., 864 sq. ft.,1,008 sq. ft., or 1,152 sq. ft, and the area of the building envelope is1,100 sq. ft. If a pre-determined building layout fits within thebuilding envelope, then the system 100 identifies the pre-determinedbuilding layout as being suitable for the building envelope. The system100 also considers whether the width and length of the pre-determinedbuilding layout fits within the building envelope.

For example, the system 100 determines if the entire area of thepre-determined building layout polygon fits within the building envelopepolygon. If so, then the pre-determined building layout is identified asbeing suitable to fit within that particular building envelope. Thisconcept is illustrated in FIG. 4 where the polygon of pre-determinedbuilding layout 410 exceeds the boundaries of the building envelope 408.So in this case, the pre-determined building layout would be excluded,and would not be considered suitable for the building envelope.

Once the system 100 identifies a list of suitable building layouts foreach of the building envelopes, the system 100 updates the list 412 withthe list of suitable building layouts. A user may then select one of thesuitable building layouts from the list, and a corresponding suitablebuilding footprint would be displayed, via the user interface 400, inthe respective building envelope.

As noted earlier, in this example, the building envelope is large enoughto build up to a 1,100 sq. ft. structure. In one embodiment, the system100 provides a user interface where the user may further tailor asuitable building layout thereby increasing the size of the suitablebuilding layout, and yet remain within the area of the buildingenvelope. The system 100 provides functionality to extend a selectedbuilding layout and increase the overall area of the building layout upto the maximum building envelope area.

For example, referring to FIG. 8, building layouts in row 820A at 538sq. ft., 820B at 536 sq. ft., and 820C at 675 sq. ft. would be suitablefor the building envelope of 1,110 sq. ft. The system 100 initiallyselects a basic configuration of a building layout as depicted in row820C (which includes four building modules shown as selected in columns810A, 810B, 810C) and has a total area of 1,008 sq. ft. The system 100then identifies if any of these building modules might be extended. Inthis example, the bedroom and living modules might be extended. Thesystem 100 asks whether space should be added to one of the rooms. Thesystem 100 receives confirmation as to which of the rooms are to beextended. If the building layout is to be extended, then the system 100adds an extension to the respective selected rooms thereby increasingthe overall area of the building layout. The interface may allow theuser to select a specific width, length or square footage amount toincrease and/or automatically increase the building layout to theavailable square footage of the building envelope (e.g. up to 1,100 sq.ft.)

Referring to FIG. 5, an exemplary user interface 500 of system 100 isillustrated with property boundary 504, pre-existing footprints 506,building envelopes 508, 509, suitable building footprint 510, user inputaffordance 502, and suitable building layout selection list 512.Multiple noncontiguous building envelopes 508, 509 are displayed. Theuser interface 500, may receive a selection of one of the buildingenvelopes 508, 509, and the system 100 updates the list 512 to includeonly those suitable building layouts that would fit within the selectedbuilding envelope. For example, there may be a first building envelope508 that is very large in size, and a second building envelope 509 thatis smaller in size. The larger sized building envelope 508 mayadequately fit many different suitable building layouts, whereas thesmaller sized building envelope 509 my only fit a couple of differentsuitable building layouts.

Additionally, a user may interact, via the user interface 500, with asuitable building footprint 510 and select a different building envelopeon which to reposition the suitable building footprint. For example, thesystem 100 may allow repositioning, via the user interface 500, of asuitable building footprint 510 from a first building envelope 508 to asecond building envelope 509 by dragging and dropping the suitablebuilding footprint from the first building envelope 508 to the secondbuilding envelope 509. Alternatively, the user may select, via the userinterface 500, the second building envelope 509 and the suitablebuilding footprint 510 is automatically positioned from the firstbuilding envelope 508 to the second building envelope 509.

However, it should be noted, in this example, that in some instances thesecond building envelope 509 may be too small in size or area to allowrepositioning of the suitable building footprint 510 to the secondbuilding envelope 509. In such a case, the system 100 would not allowrepositioning of the suitable building footprint 510 to buildingenvelope 509. The system may, however, suggest a smaller suitablebuilding footprint that would be small enough in size for the secondbuilding envelope 509.

The system 100 may operate in a mode where one or more suitable buildingfootprints may be placed within multiple building envelopes. Forexample, a suitable building footprint may be placed on both buildingenvelopes 508, 509. This instance is where a user may desire to installtwo or more separate new buildings within a building envelope. Thesuitable building footprints would be subject to the size constraints ofthe respective building envelopes. Additionally, the system 100, mayevaluate the zoning data to determine whether multiple additionalbuilding footprints are even allowed. If multiple additional buildingfootprints are not allowed, then the system 100 would preclude placementof multiple suitable building footprints.

Now referring to FIG. 6, an exemplary user interface 600 of system 100is illustrated.

The system 100 generates user interface 600 and displays one or moresuitable building layouts based on a chosen suitable building footprint.For example, the user interface 300 of FIG. 3 may display the userinterface 600 when a user double clicks with a mouse input device on asuitable building footprint 310, or via some other method (e.g., a menuselection). In this example, the user interface 600 depicts threepossible building layouts 610A, 610B and 610C that are available for thepreviously selected suitable building footprint.

Building layout 610A is an I-shaped structure with a total of 538 squarefeet. Building layout 610A includes a 73 sq. ft. bathroom, a 191 sq. ft.kitchen & living space, and a 191 sq. ft. bedroom with a wardrobe spaceof 83 sq. ft.

Building layout 610B is an L-shaped structure a total of 675 squarefeet. Building layout 610B includes a 73 sq. ft. bathroom, a 191 sq. ft.kitchen & living space, a 125 sq. ft. bedroom, and a 191 sq. ft. bedroomwith a wardrobe space of 83 sq. ft.

Building layout 610C is a B-shaped structure with a total of 536 squarefeet. Building layout 610C includes a 73 sq. ft. bathroom, a 191 sq. ftkitchen & living space, and a 217 sq. ft. bedroom with a wardrobe spaceof 55 sq. ft.

The system 100 receives a selection of one of the generated buildinglayouts 610A, 610B, 610C. The system 100 receives a selection orconfirmation for a suitable building layout. Based on a selectedsuitable building layout (as described in this disclosure), the system100 may create a request or order and transmit the request or order to amanufacturer providing 3D printing instructions for the selectedsuitable building layout. Additionally, the system 100 may generate oneor more electronic reports and transmit the report(s) (e.g., apermitting document package) to various recipients (e.g., to planningdepartment officials) via electronic communication (e.g., electronicmail). The specific information included in the report may be based onan electronic template which identifies the required information thatmay be required a governmental municipality (e.g., city, township,county, etc.) The electronic reports may include the selected adescription of building modules for the selected suitable buildinglayout. Each building module has a pre-defined specification andrequirements which may be included in the generated permitting documentpackage, including building module connection types, required foundationtype, utility requirements, and connections between building modules.

Also, the system 100 may generate instructions to print the suitablebuilding layout and/or modules that form the suitable building layout.For example, a suitable building layout (and its component buildingmodules) might be produced using a Large Scale Additive Manufacturingmethod such as 3D printing in an automated production line wheresuccessive layers of materials are laid down in a manner to createdifferent structures. The size of a component building module may belimited to the maximum printable area of the 3D printer. For off-sitemanufacturing, the maximum size of a printed structure might also berestricted to the limitations of transportation capabilities.

The system 100 may generate an electronic package of one or moreelectronical files for transmission to one or more 3D printers forprinting of the structures. The system 100 may create files for acompleted building layout and/or individual building modules of abuilding layout. For example, the system 100 may create files in aformat used for 3D printing (e.g., .obj files (very common format for 3Dprinting), .STL files (STereoLithography), .gcode for G-code data files,VRML (Virtual Reality Modelling Language) files, .3MF files (anXML-based format used by Microsoft), .X3G files (a proprietary formatused by Makerbot), .AMF files (Additive Manufacturing File Format—anXLM-based open standard format), .FBX files (used by Autodesk), and/or.PLY files (Polygon File Format)).

Referring now to FIG. 7, the illustration depicts examples 700 ofbuilding modules B1, B2, U1, U2, L1, L2 and L3. These building modulesmay be combined together to form a building layout. Three differentbuilding modules groupings 710A, 710B, 710C are shown that may becombined together. The first grouping 710A includes bathroom modules B1and B2. The first bathroom module B1 is a bathroom module sized at 73sq. ft. with a door shown at the top of the module. The second bathroommodule B2 is a bathroom module with the sized at 73 sq. ft. with a doorshown at the lower right of the module.

The second grouping 710B includes two utility modules U1 and U2. Thefirst utility module U1 includes a bathroom (using bathroom module B1)and kitchen and living space area sized at 191 sq. ft. The secondutility module U2 includes a bathroom (using bathroom module B2) andkitchen and living space area sized at 191 sq. ft.

The third grouping 710C includes three living room modules L1, L2 andL3. The first living room module L1 includes a bedroom sized at 125 sq.ft. The second living room module L2 includes a bedroom sized at 191 sq.ft. and a wardrobe area sized at 83 sq. ft. The third living room moduleL3 includes a bedroom sized at 217 sq. ft. and a wardrobe area sized at55 sq. ft.

Referring now to FIG. 8, the illustration depicts examples 800 of howthe building modules of FIG. 7 may be combined. The system 100, via asuitable layout construction module 110, may automatically configurebuilding modules into the respective suitable building layouts based onreceived user requirements indicating what type of building attributesare desired. For example, system 100 may request how many bedrooms areneeded, whether bathrooms are needed, whether a kitchen is needed,whether a dining room is needed, etc. Based on a user's confirmation ofthe attributes of a new building, the system 100 then may assemble thebuilding modules together to form one or more building layouts thatwould fit within one of the property's building envelopes.

The modules U1, U2, L1, L2 and L3 depicted in FIG. 8 correspond to themodule U1, U2, L1, L2 and L3 of FIG. 7. Rows 820A, 820B, 820C showvarious examples of how the different modules in columns 810A, 810B,810C, 810D, 810E may be combined together to form a building layout. Theshaded circle in one of the building module columns 810A, 810B, 810C,810D, 810 indicates for a respective row a selected building module toinclude in the assembled building layout. For example, combined buildingmodules of row 820A include the module U2 of column 810B and the moduleL2 of column 810D. Combined building modules of row 820B include themodule U1 of column 810A and the module L3 of column 810E. Combinedbuilding modules of row 820C include the module U2 of column 810B,module L1 of column 810C and module L3 of 810D.

FIG. 10 illustrates a flowchart of an example process for customizing abuilding layout for an automated production line comprising a 3Dprinting system. The system 100 provides for the selection andcustomization of different building layouts to create a suitablebuilding layout for an automated production line comprising a 3Dprinting system. The system 100 provides a user interface andfunctionality that allows a user to select among different buildingmodules, such as those described in reference to FIGS. 7 and 8, to forma building layout where each of the building modules forming thebuilding layout would be 3D printed via an automated production linehaving a 3D printing system and then later assembled. The 3D printedbuilding module may go through other post-processing steps such aspouring foam for insulation, finishing exterior and interior surfaces. Abuilding module represents a building structure that may be 3D printedand assembled together with another 3D printed building structure ofanother building module. A building layout may be customized by theselection of two or more building modules thereby creating an assembledbuilding layout. The assembled building layout includes those buildingmodules that are of a configuration that may be physically assembledtogether after the respective building modules have been 3D printed.

The system 100 may optionally select a set of building modules forpresentation, via a user interface, to a user based on user-definedrequirements (1010). For example, the system 100 may receive user inputdefining parameters for the overall dimension of an assembled buildingsuch as width and length, total square feet, etc. Also, the system 100may receive user input defining the particular parameters for anindividual building module. Based on the user-defined requirements, thesystem 100 may retrieve and present to the user those particularbuilding modules that qualify or meet the user's requirements. Forexample, if the overall building footprint must fit within a 30-foot by30-foot square area, then the system 100 would preclude and not presentto the user those building modules that exceed 30 ft in its length orwidth.

This functionality allows a user to customize the size and shape of theindividual building modules (e.g., a bathroom, living room, bedroom,utility room, garage, dining room, kitchen, storage room, etc.) for theassembled building layout. For example, the system 100 may receive auser input for desired dimensions of a living room and bedroom. Based onthe desired dimensions, the system 100 may retrieve and present to theuser, via the user interface, those particular building modules thatqualify or meet the user's requirements. In this case, the system 100would only present living room and bedroom modules that meet thedimensional requirements as set by the user.

Also, the system 100 may allow further customization by allowing theuser to select the building module categories that the user desires tohave included in assembled building layout. The building modulecategories are different types of rooms are structures that may becombined together, such as a bathroom, living room, bedroom, game room,utility room, garage, dining room, kitchen, and/or a storage room. Thesystem 100 may present to the user a listing and/or a graphicalrepresentation of the different categories of the building module types.In some instances, only one building module may be selected for eachcategory. In other instances, one or more building modules may beselected from each category.

A user may select one or more different categories of the buildingmodule types that the user desires to be included in the assembledbuilding layout. For example, the user may want to create a customized3D building having only a bathroom, utility room and a living room. Thesystem 100 would receive a selection from the user of the differentbuilding module types. In response to the selected types, the system 100would present, via the user interface, building modules associated withthe three different selected building module types. This allows the userto pick and choose and combine together bathroom building modules,utility room building modules, and living room building modules. Inother words, the user may easily customize and assemble together thosebuilding module types of interest to the user.

Moreover, the system 100 may also present to the user, via the userinterface, graphical representations of one or more assembled buildinglayouts that include the desired categories of the building moduletypes. For example, the system 100 may present a few differentconfigurations for assembled building layouts having a bathroom, utilityroom and a living room. The user then may select one of the assembledbuilding layouts for 3D printing.

The system 100 may display a user interface depicting a graphicalrepresentation of one or more building modules (1020). Building modulesthat form an assembled building layout are later 3D printed. The 3Dprinted building modules form components which are physically assembledtogether to build a building structure. In some instances, the selectedbuilding modules may only be assembled together in one configuration. Inother instances, the selected building modules may be assembled togetherto form multiple configurations for a building layout.

The user interface receives a selection of one or more of the buildingmodules. For example, a user interface may present the examples 700building modules of FIG. 7. The user interface may receive a selectionof one or more of the building modules (1030). For example, a user mayselect one module from each of the three different building modulesgroupings 710A, 710B, 710C. In one embodiment, each of the modules in aparticular grouping are alternatives to each other. For example, for thebathroom grouping 710A, a user may select only one module from thegroup, such as B1 or B2. In other embodiments, multiple modules from thesame building module grouping may be selected together. The buildingmodules graphically describe and/or represent layouts of physical 3Dprinted structures that can be joined together and assembled to from areal-world structure, such as a house or other physical building.

The system 100 may assemble and display in real-time the selectedbuilding modules showing what the completed building would look like.For example, the system may display, via the interface, a view of anassembled building layout depicting each of the selected buildingmodules placed together to form a single building structure (1040). Thisfunctionality allows the user to customize the assembled building layoutin real-time and see what different combinations of building moduleswould look like together.

While customizing the assembled building layout the user may select fromdifferent building modules. However, in some cases a selection of onebuilding module of one type may preclude the selection of a buildingmodule of another type. This may be due to the particular configurationof the first selected building module type. For example, a buildingmodule may have a pre-defined placement of doors, windows or otherstructures. Other building modules may not be combinable with the firstselect building module. In such a case, the system may indicate thatother building modules as being non-selectable. For example, assume thattwo bedroom building modules and three living room building modules arepresented via a user interface for selection by a user. All five of thepresented building modules would initially be indicated as selectable.However, if a user selects a first bedroom module, then assume that thesecond living room building module is not compatible with the firstbedroom building module. In other words, the second living room buildingmodule and the first bedroom building module may not be combinedtogether to form an assembled building layout. For example, the reasonthe two building modules may not be combinable could be due to buildingmodule size differences, door or window placement or other factors.

In this case, after the user selects the first bedroom building module,the system 100 would indicate that the second living room module is notselectable (e.g., by graying out, de-emphasis, de-highlighting, or viasome other graphical indication above or about the second living roommodule). Likewise, before any building module is selected, if the userselects the second living room building module first, then the firstbedroom module would become non-selectable.

The system 100 may include a building module compatibility table ordatabase which the system 100 uses to determine which building modulesare configurable with other building modules. For example, the system100 may evaluate if a first building module is selected, then whichother building modules are compatible with the first building module.For those incompatible building modules, the system may indicate thatthey are not selectable. The compatibility of building modules may bebased on whether the selected building modules may be assembled togetherwhen 3D printed.

In certain instances, due to the shape or configuration of a particularbuilding module, the building module may not be combinable with anotherbuilding module. A building module compatibility table or database maystore information indicating which other building modules a particularbuilding module is or is not compatible with to form an assembledphysical structure. This allows the system 100 to enforce which buildingmodules are selectable and/or combinable together to form an assembledbuilding layout.

Also, the system 100 may enforce that for each of the selected buildingmodules they must be compatible together to form a complete buildingstructure where each of the 3D printed building modules may be assembledtogether. The system 100 may use a compatibility determination engine oruse a set of predefined rules to assess whether different buildingmodules may be combined. For example, the system 100 may assess whetherlengths or widths of different building modules are equal with oneanother. If not the system 100 may not allow the selection of non-equallength or width building modules to be combined. The system 100 may alsodetermine whether two different building modules have openings, such asdoors or windows, that would not be compatible with two buildingmodules.

In one embodiment, the building modules may have pre-defined locationsabout a building module where inter-connecting structures are 3Dprinted. The inter-connecting structures allow for the assembly of theindividual 3D printed structures for each of the separate selectedbuilding modules that form an assembled building layout. For example, a3D printed structure associated with a building module may have lips,slots, joints, protrusions, recesses, fingers, etc. that allow for twoseparate 3D printed building modules to be aligned, joined and fastenedtogether. For each building module, the inter-connecting structures maybe printed at pre-determined locations about the building module suchthat when the building module is 3D printed, the printed structure maybe mated with another 3D printed structure at the inter-connectingstructure locations. For example, the walls of the 3D printed buildingstructures may be aligned and placed together. An epoxy or some otheradherent may be used to help seal the joints of the walls. The walls mayhave multiple inter-connecting structures where a screw and screw nutsmay be placed to secure the walls of adjoining building structurestogether. In the case of a building module having pre-defined locationsof inter-connecting structures, this may preclude two building modulesfrom being combined where the pre-defined locations do not match betweenthe two building modules. In this case, the system 100 may not allow thecombination of the two building modules.

In another embodiment, the system 100 may dynamically determine theplacement of the inter-connecting structures about the building modulesafter the building modules are assembled together. The system 100determines and dynamically places inter-connecting structures for thebuildings modules, which are then subsequently formed in the respective3D printed structures. This allows for greater flexibility in thecustomization of the building modules in that the system 100 determinesthe placement of inter-connecting structures about the selected buildingmodules after an assembled building layout is created.

The system 100 may present building modules of having predefined sizesor dimensions such that the building module would be 3D printed in thosepredefined sizes or dimensions. For example, a pre-determined size of abedroom building module may be 20 f×15 ft. The system 100 may allow forscaling or resizing any of predefined sizes or dimensions of buildingmodules. The system 100 may also maintain the same presented shape ofthe building module while it is being resized. An increase in the sizeof the building module may cause a corresponding increase in the size ofthe building module to be 3D printed. A decrease in the size of thebuilding module may cause a corresponding decrease in the size of abuilding module being 3D printed. A resized building module may then beused by the system 100 as one of the building modules for the assembledbuilding layout to be 3D printed.

The system 100 may have predetermined maximum and minimum size changesthat are allowed are disallowed for resizing a building module. Forexample, a building module's dimensions may be reduced in size only to aparticular dimensional size before the building module is notfunctional. Also, the system 100 may dynamically add or remove windowsor doors about the building modules when the building module is resized.

Likewise, an assembled building layout may also be scaled or resized tochange the overall dimensions of the assembled building layout. The userinterface may receive selections about a graphical representation of theassembled building layout. This allows the user to resize or reshape theassembled building layout. Thus, allowing the user to easily change theoverall dimensions of a 3D printed structure.

The system 100 may present predefined building modules where thebuilding modules have a preset location for windows and doors. For anadded degree of customization, the building modules may be presentedwithout door or window placement. A user may combine different buildingmodules to form an assembled building layout. After the building layoutis formed, the system 100 may receive selections for custom placement ofdoors and/or windows about the building layout. This allows a user toselect where they would like to have doors or windows placed about abuilding.

In another mode, the system 100 may dynamically place doors and/orwindows about the building layout. For example, the system 100 may placedoors or windows about the building layout based on the overallassembled configuration. The system 100 may automatically place thedoors or windows in an ideal location about the individual buildingmodules. For example, the system 100 may automatically place a window oneach side of a corner of adjoining walls. Other structures may also becustomized and placed on the building modules, such as electric outlets,wall insets, etc.

The system 100 may automatically generate files in a format used for 3Dprinting (as previously described) with instructions to print therespective customized building modules including the user customizedand/or system dynamic placement of doors, windows or other structures.

In another mode, the system 100 may present a user interface depicting agraphical interface such as that shown in FIG. 8. The example chartshows assembled building layouts 820A, 820B and 820C and the respectivebuilding modules 810A, 810B, 810C, 810D and 810E that form the buildingmodules as indicated by the circle in a respective row and column. Forexample, assembled building layout 820B includes building modules 810Aand 810E. A user may select one of the assembled building layouts for 3Dprinting.

Similar to the customization of individual building modules as describedabove, the system 100 may provide for customization of a pre-determinedassembled building layout. The system 100 may receive selection for theplacement, or dynamically place windows, doors or other structures aboutthe assembled building layout. Additionally, an assembled buildinglayout may be resized or scaled to adjust the overall dimensions of thebuilding modules that are part of the assembled building layout. Theadjusted building layout may then be 3D printed with the individualbuilding modules being 3D printed according to the adjusts to thebuilding layout.

The system 100 may receive a confirmation of the assembled buildinglayout for 3D printing (1050). The user interface may present agraphical user affordance, such as a button or checkbox, allowing theuser to confirm the assembled building layout for 3D printing. After thebuilding layout is confirmed, the individual building modules may be 3Dprinted, transported to a location and the individual building modulesassembled.

The building module may be 3D printed via an automated production linewith a 3D printing system and then assembled together to form an actualphysical building structure. Additionally, other machinery may be usedto complete the fabrication of the physical building structure, such astrimming and painting stations. The building structures include a roof,floor, walls, windows and doorways. The 3D printed modules may either beassembled together in whole are in part to form a building structure.The partly or completely assembled building structures may betransported to the respective property where the building structureswill be installed. For example, building structures may be connected tobuilding structure, and building structure may be connected to buildingstructure. These preassembled building structures may then betransported and assembled together at the property to form a completedlivable building.

Fasteners or assembly mechanism may be used to join the buildingstructures together. The walls of the building structures are alignedand placed together. An epoxy or some other adherent may be used to helpseal the joints of the walls. The walls have multiple connection pointswhere a screw and screw nuts may be placed to secure the walls ofadjoining building structures together.

FIG. 9 illustrates an example machine of a computer system within whicha set of instructions, for causing the machine to perform any one ormore of the methodologies discussed herein, may be executed. Inalternative implementations, the machine may be connected (e.g.,networked) to other machines in a LAN, an intranet, an extranet, and/orthe Internet. The machine may operate in the capacity of a server or aclient machine in client-server network environment, as a peer machinein a peer-to-peer (or distributed) network environment, or as a serveror a client machine in a cloud computing infrastructure or environment.

The machine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a server, a network router, a switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while a single machine is illustrated, the term “machine” shall also betaken to include any collection of machines that individually or jointlyexecute a set (or multiple sets) of instructions to perform any one ormore of the methodologies discussed herein.

The example computer system 900 includes a processing device 902, a mainmemory 904 (e.g., read-only memory (ROM), flash memory, dynamic randomaccess memory (DRAM) such as synchronous DRAM (SDRAM) or Rambus DRAM(RDRAM), etc.), a static memory 906 (e.g., flash memory, static randomaccess memory (SRAM), etc.), and a data storage device 918, whichcommunicate with each other via a bus 930.

Processing device 902 represents one or more general-purpose processingdevices such as a microprocessor, a central processing unit, or thelike. More particularly, the processing device may be complexinstruction set computing (CISC) microprocessor, reduced instruction setcomputing (RISC) microprocessor, very long instruction word (VLIW)microprocessor, or processor implementing other instruction sets, orprocessors implementing a combination of instruction sets. Processingdevice 902 may also be one or more special-purpose processing devicessuch as an application specific integrated circuit (ASIC), a fieldprogrammable gate array (FPGA), a digital signal processor (DSP),network processor, or the like. The processing device 902 is configuredto execute instructions 926 for performing the operations and stepsdiscussed herein.

The computer system 900 may further include a network interface device908 to communicate over the network 920. The computer system 900 alsomay include a video display unit 910 (e.g., a liquid crystal display(LCD) or a cathode ray tube (CRT)), an alphanumeric input device 912(e.g., a keyboard), a cursor control device 914 (e.g., a mouse), agraphics processing unit 922, a signal generation device 916 (e.g., aspeaker), graphics processing unit 922, video processing unit 928, andaudio processing unit 932.

The data storage device 918 may include a machine-readable storagemedium 924 (also known as a computer-readable medium) on which is storedone or more sets of instructions or software 926 embodying any one ormore of the methodologies or functions described herein. Theinstructions 926 may also reside, completely or at least partially,within the main memory 904 and/or within the processing device 902during execution thereof by the computer system 900, the main memory 904and the processing device 902 also constituting machine-readable storagemedia.

In one implementation, the instructions 926 include instructions toimplement functionality corresponding to the components of a device toperform the disclosure herein. While the machine-readable storage medium924 is shown in an example implementation to be a single medium, theterm “machine-readable storage medium” should be taken to include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore sets of instructions. The term “machine-readable storage medium”shall also be taken to include any medium that is capable of storing orencoding a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresent disclosure. The term “machine-readable storage medium” shallaccordingly be taken to include, but not be limited to, solid-statememories, optical media and magnetic media.

Some portions of the preceding detailed descriptions have been presentedin terms of algorithms and symbolic representations of operations ondata bits within a computer memory. These algorithmic descriptions andrepresentations are the ways used by those skilled in the dataprocessing arts to most effectively convey the substance of their workto others skilled in the art. An algorithm is here, and generally,conceived to be a self-consistent sequence of operations leading to adesired result. The operations are those requiring physicalmanipulations of physical quantities. Usually, though not necessarily,these quantities take the form of electrical or magnetic signals capableof being stored, combined, compared, and otherwise manipulated. It hasproven convenient at times, principally for reasons of common usage, torefer to these signals as bits, values, elements, symbols, characters,terms, numbers, or the like.

In general, the terms “engine” and “module”, as used herein, refer tologic embodied in hardware or firmware, or to a collection of softwareinstructions, possibly having entry and exit points, written in aprogramming language, such as, for example, Java, Lua, C or C++. Asoftware module may be compiled and linked into an executable program,installed in a dynamic link library, or may be written in an interpretedprogramming language such as, for example, BASIC, Perl, or Python. Itwill be appreciated that software modules may be callable from othermodules or from themselves, and/or may be invoked in response todetected events or interrupts. Software modules configured for executionon computing devices may be provided on one or more computer readablemedia, such as compact discs, digital video discs, flash drives, or anyother tangible media. Such software code may be stored, partially orfully, on a memory device of the executing computing device. Softwareinstructions may be embedded in firmware, such as an EPROM. It will befurther appreciated that hardware modules may be comprised of connectedlogic units, such as gates and flip-flops, and/or may be comprised ofprogrammable units, such as programmable gate arrays or processors. Themodules described herein are preferably implemented as software modules,but may be represented in hardware or firmware. Generally, the modulesdescribed herein refer to logical modules that may be combined withother modules or divided into sub-modules despite their physicalorganization or storage

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the above discussion, itis appreciated that throughout the description, discussions utilizingterms such as “identifying” or “determining” or “executing” or“performing” or “collecting” or “creating” or “sending” or the like,refer to the action and processes of a computer system, or similarelectronic computing device, that manipulates and transforms datarepresented as physical (electronic) quantities within the computersystem's registers and memories into other data similarly represented asphysical quantities within the computer system memories or registers orother such information storage devices.

The present disclosure also relates to an apparatus for performing theoperations herein. This apparatus may be specially constructed for theintended purposes, or it may comprise a general purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of diskincluding floppy disks, optical disks, CD-ROMs, and magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions, each coupled to a computer system bus.

Various general purpose systems may be used with programs in accordancewith the teachings herein, or it may prove convenient to construct amore specialized apparatus to perform the method. The structure for avariety of these systems will appear as set forth in the descriptionabove. In addition, the present disclosure is not described withreference to any particular programming language. It will be appreciatedthat a variety of programming languages may be used to implement theteachings of the disclosure as described herein.

The present disclosure may be provided as a computer program product, orsoftware, that may include a machine-readable medium having storedthereon instructions, which may be used to program a computer system (orother electronic devices) to perform a process according to the presentdisclosure. A machine-readable medium includes any mechanism for storinginformation in a form readable by a machine (e.g., a computer). Forexample, a machine-readable (e.g., computer-readable) medium includes amachine (e.g., a computer) readable storage medium such as a read onlymemory (“ROM”), random access memory (“RAM”), magnetic disk storagemedia, optical storage media, flash memory devices, etc.

In the foregoing disclosure, implementations of the disclosure have beendescribed with reference to specific example implementations thereof. Itwill be evident that various modifications may be made thereto withoutdeparting from the broader spirit and scope of implementations of thedisclosure as set forth in the following claims. The disclosure anddrawings are, accordingly, to be regarded in an illustrative senserather than a restrictive sense.

1. A system comprising one or more processors, and a non-transitorycomputer-readable medium including one or more sequences of instructionsthat, when executed by the one or more processors, cause the system toperform operations comprising: displaying, via a user interface, agraphical representation of two or more building modules, wherein abuilding module represents a building structure that may be 3D printedand assembled together with another 3D printed building structure ofanother building module, wherein the user interface displays at leasttwo building modules of a first building module category in a firstportion of the user interface, and displays at least two buildingmodules of a second building module category in a second portion of theuser interface; customizing a building layout from a user selection, viathe user interface, of one building module from the displayed buildingsmodules of the first building module category and one building modulefrom the displayed building modules of the second building modulecategory and creating an assembled building layout, wherein theassembled building layout includes those building modules that are of aconfiguration that may be physically assembled together after therespective building modules have been 3D printed; displaying, via theuser interface, the assembled building layout including the selected twoor more building modules; and receiving a confirmation of the assembledbuilding layout for production via an automated production linecomprising a 3D printing system.
 2. The system of claim 1, whereincustomizing a building layout comprises: receiving a user selection ofthe two or more building modules to be included in the building layout.3. The system of claim 1, wherein the two or more building modules areselectable from building module categories, and only one building modulemay be selected for each category.
 4. The system of claim 1, wherein thetwo or more building modules are selectable from building modulecategories, and two or more building modules may be selected for eachcategory.
 5. The system of claim 1, wherein the building modules areassociated with a building module category of a bathroom type, utilityroom type, and living room type.
 6. The system of claim 5, wherein theuser interface provides a grouping of selectable building modules fromat least one of the building module categories.
 7. The system of claim5, wherein a particular building module of a building module categorymay only be combined with a particular building module of anotherbuilding module category.
 8. A method implemented by a system comprisingone or more processors, the method comprising: displaying, via a userinterface, a graphical representation of two or more building modules,wherein a building module represents a building structure that may be 3Dprinted and assembled together with another 3D printed buildingstructure of another building module, wherein the user interfacedisplays at least two building modules of a first building modulecategory in a first portion of the user interface, and displays at leasttwo building modules of a second building module category in a secondportion of the user interface; customizing a building layout from a userselection, via the user interface, of one building module from thedisplayed buildings modules of the first building module category andone building module from the displayed building modules of the secondbuilding module category and creating an assembled building layout,wherein the assembled building layout includes those building modulesthat are of a configuration that may be physically assembled togetherafter the respective building modules have been 3D printed; displaying,via the user interface, the assembled building layout including theselected two or more building modules; and receiving a confirmation ofthe assembled building layout for production via an automated productionline comprising a 3D printing system.
 9. The method of claim 8, whereincustomizing a building layout comprises: receiving a user selection ofthe two or more building modules to be included in the building layout.10. The method of claim 8, wherein the two or more building modules areselectable from building module categories, and only one building modulemay be selected for each category.
 11. The method of claim 8, whereinthe two or more building modules are selectable from building modulecategories, and two or more building modules may be selected for eachcategory.
 12. The method of claim 8, wherein the building modules areassociated with a building module category of a bathroom type, utilityroom type, and living room type.
 13. The method of claim 12, wherein theuser interface provides a grouping of selectable building modules fromat least one of the building module categories.
 14. The method of claim12, wherein a particular building module of a building module categorymay only be combined with a particular building module of anotherbuilding module category.
 15. A non-transitory computer storage mediumcomprising instructions that when executed by a system comprising one ormore processors, cause the one or more processors to perform operationscomprising: displaying, via a user interface, a graphical representationof two or more building modules, wherein a building module represents abuilding structure that may be 3D printed and assembled together withanother 3D printed building structure of another building module,wherein the user interface displays at least two building modules of afirst building module category in a first portion of the user interface,and displays at least two building modules of a second building modulecategory in a second portion of the user interface; customizing abuilding layout from a user selection, via the user interface, of onebuilding module from the displayed buildings modules of the firstbuilding module category and one building module from the displayedbuilding modules of the second building module category and creating anassembled building layout, wherein the assembled building layoutincludes those building modules that are of a configuration that may bephysically assembled together after the respective building modules havebeen 3D printed; displaying, via the user interface, the assembledbuilding layout including the two or more building modules; andreceiving a confirmation of the assembled building layout for productionvia an automated production line comprising a 3D printing system. 16.The non-transitory computer storage medium of claim 15, whereincustomizing a building layout comprises: receiving a user selection ofthe two or more building modules to be included in the building layout.17. The non-transitory computer storage medium of claim 15, wherein thetwo or more building modules are selectable from building modulecategories, and only one building module may be selected for eachcategory.
 18. The non-transitory computer storage medium of claim 15,wherein the two or more building modules are selectable from buildingmodule categories, and two or more building modules may be selected foreach category.
 19. The non-transitory computer storage medium of claim15, wherein the building modules are associated with a building modulecategory of a bathroom type, utility room type, and living room type.20. The non-transitory computer storage medium of claim 19, wherein theuser interface provides a grouping of selectable building modules fromat least one of the building module categories.
 21. The non-transitorycomputer storage medium of claim 19, wherein a particular buildingmodule of a building module category may only be combined with aparticular building module of another building module category.
 22. Thesystem of claim 1, further comprising the operations of: determiningdimensional requirements of an area for a proposed building layout; anddisplaying only those building modules, via the user interface, thatwhen combined would fit within the dimensional requirements of the areafor the proposed building layout
 23. The method of claim 8, the methodfurther comprising: determining dimensional requirements of an area fora proposed building layout; and displaying only those building modules,via the user interface, that when combined would fit within thedimensional requirements of the area for the proposed building layout24. The non-transitory computer storage medium of claim 15, theoperations further comprising: determining dimensional requirements ofan area for a proposed building layout; and displaying only thosebuilding modules, via the user interface, that when combined would fitwithin the dimensional requirements of the area for the proposedbuilding layout.
 25. The system of claim 1, further comprising theoperations of: precluding, via the user interface, the selection of oneof the building modules of the second building module category based onthe user selection of the building module from the first building modulecategory.
 26. The method of claim 8, the method further comprising:precluding, via the user interface, the selection of one of the buildingmodules of the second building module category based on the userselection of the building module from the first building modulecategory.
 27. The non-transitory computer storage medium of claim 15,the operations further comprising: precluding, via the user interface,the selection of one of the building modules of the second buildingmodule category based on the user selection of the building module fromthe first building module category.